package partThree;

import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestPattern {

    @Test
    public void findSplit(){
        Pattern p=Pattern.compile("\\d+");
        String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");
        System.out.println(str[0] + str[1]  + str[2] ); //我的QQ是:我的电话是:我的邮箱是:aaa@aaa.com
    }
    @Test
    public void  findfun() throws IllegalStateException{
        //获取该内容中的所有数字
        String  mess = "abcd4abcd9abcd14abcd";
        //一、使用Pattern定义匹配规则
        Pattern   pattern = Pattern.compile("[0-9]+");
        //二、进行匹配，将匹配结果保存到Matcher中
        Matcher matcher = pattern.matcher(mess);
        //三、从matcher中获取需要的数据
        boolean find = matcher.find();
        System.out.println(find);//true
        // 返回匹配结果的在原字符串中的位置
        System.out.println(matcher.start());//4

        //matcher对象会记录此前的操作，此次返回的将是上次寻找到位置之后的下一个位置
        boolean find2 = matcher.find();
        System.out.println(find2);//true
        System.out.println(matcher.start());//9

        boolean find3 = matcher.find();
        System.out.println(find3);//true
        System.out.println(matcher.start());//14

        boolean find4 = matcher.find();
        System.out.println(find4);//true
        System.out.println(matcher.start());//java.lang.IllegalStateException: No match available

        //如果找不到了，我们可以重置指针
        matcher.reset();
    }

    @Test
    public void  lookingAtfun() {
        //获取该内容中的所有数字
        String  mess = "234bywgd156vcygy19bhy7cd2bhe3782";
        //使用pattern定义匹配规则
        Pattern pattern = Pattern.compile("[0-9]{1,4}");
        //进行匹配，将匹配好的结果保存到Matcher中
        Matcher matcher = pattern.matcher(mess);

        //lookingAt将会从头开始匹配
        System.out.println(matcher.lookingAt());
    }

    //匹配之后，获取到所有符合条件的数据并进行统计
    @Test
    public void  findfun2() {
        //获取该内容中的所有数字
        String  mess = "bywgd156vcygy19bhy7cd2bhe3782";
        //一、使用Pattern定义匹配规则
        Pattern   pattern = Pattern.compile("[0-9]{1,4}");
        //二、进行匹配，将匹配结果保存到Matcher中
        Matcher matcher = pattern.matcher(mess);
        //三、从matcher中获取需要的数据
        boolean find = matcher.find();
        System.out.println("使用matcher.start()输出匹配字符所在位置："+matcher.start());
        //group方法用来输出你刚才所找到的字符
        String  group = matcher.group();
        System.out.println("使用group输出所匹配字符串："+group);

        //将匹配机制进行重置
        System.out.println("使用matcher.reset()重置指针，返回一个Matcher对象："+matcher.reset());;

        //循环匹配
        int  count = 0;
        while(matcher.find()) {
            count++;
            System.out.println("电话号码是"+matcher.group());
        }
        System.out.println("总共匹配的数据数量是"+count+"个");
    }
}